#include <iostream>
#include <stdio.h>

using namespace std;

//抽象类BankTemplateMethod（银行业务办理流程类）
class BankTemplateMethod{
public:
	void takeNumber(){
		cout << "取号排队。" << endl;
	}
	
	virtual void transact() = 0;
	
	void evaluate(){
		cout << "反馈评分。" << endl;
	}
	
	void process(){
		this->takeNumber();
		this->transact();
		this->evaluate();
	}
}; 

//具体子类Deposit（存款类）
class Deposit : public BankTemplateMethod{
public:
	void transact(){
		cout << "存款" << endl;
	}
};

//具体子类Withdraw（取款类）
class Withdraw : public BankTemplateMethod{
public:
	void transact(){
		cout << "取款" << endl;
	}
};

//具体子类Transfer（转账类）
class Transfer : public BankTemplateMethod{
public:
	void transact(){
		cout << "转账" << endl;
	}
};


int main(int argv, char**argc)
{
    printf("************  test hello zc!!!   **************\n");
    /* add test code! */

	BankTemplateMethod *bank = new Transfer();
	
	bank->process();
	
	delete bank;
	

    
    return 0;
}
